package cn.exrick.xboot.flow.service.serviceimpl;

import cn.exrick.xboot.common.utils.ResultUtil;
import cn.exrick.xboot.common.vo.Result;
import cn.exrick.xboot.flow.VO.TemplateinfoUserVo;
import cn.exrick.xboot.flow.entity.FlowTaskInstance;
import cn.exrick.xboot.flow.entity.FlowTemplateinfoUserAuth;
import cn.exrick.xboot.flow.mapper.FlowTemplateinfoUserAuthMapper;
import cn.exrick.xboot.flow.service.IFlowTemplateinfoUserAuthService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

/**
 * <p>
 *  服务实现类
 * </p>
 *
 * @author zy
 * @since 2022-10-26
 */
@Service
public class FlowTemplateinfoUserAuthServiceImpl extends ServiceImpl<FlowTemplateinfoUserAuthMapper, FlowTemplateinfoUserAuth> implements IFlowTemplateinfoUserAuthService {
   @Autowired
   private FlowTemplateinfoUserAuthMapper flowTemplateinfoUserAuthMapper;
    @Override
    public Result<Object> saveFlowTemplateinfoUserAuth(TemplateinfoUserVo templateinfoUserVo) {
        QueryWrapper<FlowTemplateinfoUserAuth> query = Wrappers.query();
        query.lambda().eq(FlowTemplateinfoUserAuth::getHontUserId, templateinfoUserVo.getHontUserId());
        flowTemplateinfoUserAuthMapper.delete(query);
        List<FlowTemplateinfoUserAuth> list=new ArrayList<>();
        for (String flowTemplateid : templateinfoUserVo.getFlowTemplateinfoIds()){
            FlowTemplateinfoUserAuth flowTemplateinfoUserAuth =new FlowTemplateinfoUserAuth();
            flowTemplateinfoUserAuth.setFlowTemplateinfoId(flowTemplateid);
            flowTemplateinfoUserAuth.setHontUserId(templateinfoUserVo.getHontUserId());
            list.add(flowTemplateinfoUserAuth);
        }
        if(list.size()>0){
            flowTemplateinfoUserAuthMapper.insertBatch(list);
        }
        return ResultUtil.success("保存成功");
    }

    @Override
    public  List<String> getFlowTemplateinfoIdsByUser(String userId) {
        QueryWrapper<FlowTemplateinfoUserAuth> query = Wrappers.query();
        query.lambda().eq(FlowTemplateinfoUserAuth::getHontUserId, userId);
        List<FlowTemplateinfoUserAuth> list=flowTemplateinfoUserAuthMapper.selectList(query);
        List<String> result=new ArrayList<>();
        if(list.size()>0){

         result=list.stream().map(FlowTemplateinfoUserAuth::getFlowTemplateinfoId).collect(Collectors.toList());
        }
        return result;
    }
}
